<?php

class MultimediaBN  {


	public function grabaMultimediaMaterial($categoria, $tipoMaterial, $codMaterial, $tipo_mm, $_files) {
	
		$resultado = 1;
		global $URL_RAIZ;
	
		try {
			$errores = array();
			$archivos = array();
			
			if(!is_array($_files)) return false; 
			
			$_files = $this->reArrayFiles($_files);

			// mover archivos cargados al directorio de multimedia
			$directorio = $URL_RAIZ."multimedia/replicas";
			
			foreach($_files as $k => $file)
			{
				if($file["size"] == 0) continue;
				
				$archivo = explode(".", $file["name"]);
				$extension = ((is_array($archivo) && count($archivo) > 1) ? ".".$archivo[count($archivo)-1] : "");
				$nombre_archivo = date("ymdhis").substr("00".rand(1,99),-2).$extension;
				
				if($file["error"] > 0) {
					$errores[$file["name"]][] = array("Error en la subida del archivo");
					continue;
				}
				
				if(file_exists($directorio."/".$nombre_archivo)) {
					$errores[$file["name"]][] = array("El archivo ya existe");
					continue;
				}
				
				move_uploaded_file($file["tmp_name"], $directorio."/".$nombre_archivo);
				
				$archivos[$k]["nombre"] = $nombre_archivo;
			}
			
			// grabar en tabla "multimedia"
			foreach($_files as $k => $file)
			{
				if($file["size"] == 0) continue;
				
				$pk_mm = $this->generarPKMm();
				
				$mm = new Multimedia();
				$mm->setCodMm($pk_mm);
				$mm->setTipo($tipo_mm);
				$mm->setTitulo("");
				$mm->setArchivo($archivos[$k]["nombre"]);
				$mm->setEstado("1");	
				$mm->setFechaRegistro(date("Y-m-d 00:00:00"));	
				$mm->setRegistradoPor($_SESSION["usuarioO"]);	
				$resultado = $mm->save();	
				
				if($resultado == 0) {
					$errores[$file["name"]][] = array("Error grabando archivo");
					continue;
				}
				
				
				$archivos[$k]["pk"] = $pk_mm;
			}
			
			// asociar archivos grabados al material en tabla "material_mm"
			// grabar en tabla "multimedia"
			foreach($_files as $k => $file)
			{
				if($file["size"] == 0) continue;
				
				$m = new MaterialMm();
			
				$m->setCategoria($categoria);
				$m->setTipoMaterial($tipoMaterial);
				$m->setCodMaterial($codMaterial);
				$m->setCodMm($archivos[$k]["pk"]);
				$m->setEstado("1");
				$m->setFechaAdd(date("Y-m-d 00:00:00"));
				$m->setUsuarioRegistro($_SESSION["usuarioO"]);
				$resultado = $m->save();
			
				if($resultado == 0) {
					$errores[$file["name"]][] = array("Error asociando multimedia a material");
				}
			}
	
		} catch (Exception $e) {
			$resultado = false;
		}
	
		if(count($errores) == 0) 
			return 1;
		else 
			return $errores;
			
	}
	

	private function reArrayFiles($_files) {
	
		$file_ary = array();
		$file_count = count($_files['name']);
		$file_keys = array_keys($_files);
	
		for ($i=0; $i<$file_count; $i++) {
			foreach ($file_keys as $key) {
				$file_ary[$i][$key] = $_files[$key][$i];
			}
		}
	
		return $file_ary;
	}
	
	public function generarPKMm() {
	
		$c = new Criteria();
		$c->addSelectColumn('MAX('.MultimediaPeer::COD_MM.')');
		$rs = MultimediaPeer::doSelectStmt($c);
		$fila = $rs->fetch();
		$n = $fila[0] + 1;
	
		return $n;
	}

}

?>